// 生成器函数

// function ajax ... promise

function * main() { 
  try {
    const data = yield ajax('/api/data.json')
    console.log(data)

    const user = yield ajax('/api/user.json')
    console.log(user)
  } catch (error) {
    console.log(error)
  }
}

function co(generator) { 
  const g = generator()

  function handlerResult(result) {
    if (result.done) return // 生成器函数结束
    result.value.then(
      data => { 
        handlerResult(g.next(data))
      },
      error => { // 失败处理
        g.throw(error)
      }
    )
  }

  handlerResult(g.next())
}

co(main)

// result.value.then(data => {  // result.value 是一个promsie => ajax('/api/data.json')

//   const resule2 = g.next(data) // 将值传递给 main yield语句的返回值 data 
//   if (resule2.done) return // 可以写成一个递归/回调函数 如果done 就表示 main 函数里都执行完了 

//   resule2.value.then(data => { // 接收到 ajax('/api/user.json')

//      const resule3 = g.next(data) // 将值传递给 main yield语句的返回值 user
//     if (resule3.done) return

  
//   })
// })